const gulp = require('gulp');
const del = require('del');
const plugins = require('gulp-load-plugins')();
const config = require('./gulp/config')();

plugins.stats(gulp);

function regTask(app) {
  const key = app;

  // ------ process ${app} css
  gulp.task(`${app}-clean-css`, cb => del([`${ config[key].css }**/*.css`]));

  gulp.task(`${app}-scss`, cb => gulp.src([`${ config.scss[key] }**/*.scss`])
    .pipe(plugins.plumber())
    .pipe(plugins.sass({
      outputStyle: 'expanded',
    }))
    .pipe(plugins.postcss())
    .pipe(gulp.dest(config[key].css))
  );

  gulp.task(`${app}-watch`, cb => gulp.watch([`${ config.scss[key] }**/*.scss`], [`${app}-scss`]));

  gulp.task(`${app}-dev`, cb => gulp.start(`${app}-watch`));

  gulp.task(`${app}-build-css`, [`${app}-clean-css`, `${app}-scss`]);

  // 压缩
  gulp.task(`${app}-min-css`, [`${app}-build-css`], cb => {
    if (config[key].minCssFiles) {
      gulp.src(config[key].minCssFiles)
        .pipe(plugins.cssmin())
        .pipe(plugins.rename(path => path.extname = '_min.css'))
        .pipe(gulp.dest(config[key].css))
    }

    if (config[key].concatCssFiles) {
      config[key].concatCssFiles.forEach(css => {
        gulp.src(css.files)
          .pipe(plugins.concat(css.concats))
          .pipe(plugins.cssmin())
          .pipe(gulp.dest(css.dest))
      });
    }
  });

  gulp.task(`${app}-min-js`, cb => {
    if (config[key].minJsFiles) {
      gulp.src(config[key].minJsFiles)
        .pipe(plugins.uglify({
          compress: {
            drop_console: true,
          }
        }))
        // .pipe(plugins.rename(path => path.extname = '.min.js'))
        .pipe(gulp.dest(config[key].js_mini + 'coms'))
    }

    if (config[key].concatJsFiles) {
      config[key].concatJsFiles.forEach(js => {
        gulp.src(js.files)
          .pipe(plugins.concat(js.concats))
          .pipe(plugins.uglify({
            compress: {
              drop_console: true,
            }
          }))
          .pipe(gulp.dest(js.dest))
      });
    }
  });

  // gulp build
  gulp.task(`${app}-build`, [`${app}-min-css`, `${app}-min-js`]);
}

regTask('desktop');
// regTask('b2c');
// regTask('site');
// regTask('theme');
